<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2>props的校验</h2>
      <!-- 传递的时候，传递布尔值，数字，数组，对象等，需要加冒号，转成表达式 -->
      <child
        name="迈克"
        age="20"
        :sex="1"
        :likes="['看书', '写字']"
        :score="75"
      ></child>
    </div>

    <script src="./lib/vue3.js"></script>
    <script>
      const { createApp } = Vue;

      const Child = {
        // props的数组语法
        // props: ["name", "age"],

        // props的对象语法
        // 可以规定props的数据类型
        // 以组件为单位开发的，一个人开发的组件需要给其他人用
        // 给其他调用这个组件的人看的文档
        // props: {
        //   name: String,
        //   age: Number | String,
        //   likes: Array,
        // },

        /*
          String
          Number
          Boolean
          Array
          Object
          Date
          Function
          Symbol
        */

        props: {
          name: {
            type: String,
            // 必填
            required: true,
          },
          age: {
            // 二选一
            type: [Number, String],
          },
          sex: {
            // 默认值
            type: Number,
            default: 1,
          },
          likes: Array,
          score: {
            // validator做精准校验的,必须要返回一个布尔值
            type: Number,
            validator(val) {
              return val > 60;
              // return ['success', 'warning', 'danger'].includes(value)
              // const reg = //;
              // reg.test(value);
            },
          },
        },
        template: `
          <div>child组件</div>
          <div>我叫{{ name }}, 今年{{ age }}岁, 我的爱好是{{ likes }}, 我的性别是{{ sex }}- {{ score }}</div>
        `,
      };

      createApp({
        data() {
          return {};
        },
        components: {
          Child,
        },
      }).mount("#app");
    </script>
  </body>
</html>
